Java Technologies Hibernate Configuration ফাইল তৈরি গাইড ও নোট

311

Hibernate একটি Object-Relational Mapping (ORM) ফ্রেমওয়ার্ক যা ডেটাবেসের সাথে Java objects এর সম্পর্ক স্থাপন করতে ব্যবহৃত হয়। Hibernate ব্যবহার করার জন্য, প্রথমে আপনাকে Hibernate Configuration file তৈরি করতে হবে। এই কনফিগারেশন ফাইলটি Hibernate কে বলে যে কোথায় ডেটাবেস রয়েছে, কিভাবে সংযোগ স্থাপন করতে হবে এবং কিভাবে Entity Classes এর সাথে ডেটাবেস টেবিলগুলি ম্যাপ করতে হবে।

Hibernate Configuration file সাধারণত hibernate.cfg.xml নামক XML ফাইলে থাকে, যেখানে ডেটাবেস সংযোগ, Hibernate এর সেটিংস এবং অন্যান্য প্রয়োজনীয় কনফিগারেশন থাকে।


Hibernate Configuration ফাইলের স্ট্রাকচার

এখানে একটি সাধারণ hibernate.cfg.xml কনফিগারেশন ফাইলের উদাহরণ দেওয়া হলো:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

    <!-- JDBC Database connection settings -->
    <session-factory>
        <!-- JDBC connection settings -->
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">password</property>

        <!-- JDBC connection pool settings -->
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>

        <!-- Specify dialect -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="hibernate.current_session_context_class">thread</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="hibernate.show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- Mention annotated class -->
        <mapping class="com.example.model.Employee"/>
    </session-factory>
    
</hibernate-configuration>

Hibernate Configuration ফাইলের উপাদান

  1. <hibernate-configuration>:
    এটি Hibernate কনফিগারেশনের মূল এলিমেন্ট, যা সব কনফিগারেশন সম্পর্কিত তথ্য ধারণ করে।
  2. <session-factory>:
    Hibernate সেশন ফ্যাক্টরি (SessionFactory) কনফিগারেশন সেটিংসটি এই এলিমেন্টে রাখা হয়।
  3. hibernate.connection.driver_class:
    JDBC ড্রাইভার ক্লাসের নাম এখানে দেওয়া হয়, যেমন com.mysql.cj.jdbc.Driver (MySQL এর জন্য)।
  4. hibernate.connection.url:
    ডেটাবেসের URL এখানে উল্লেখ করা হয়। এটি ডেটাবেস সার্ভারের লোকেশন এবং ডেটাবেসের নাম উল্লেখ করে, যেমন jdbc:mysql://localhost:3306/mydatabase
  5. hibernate.connection.username এবং hibernate.connection.password:
    ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য ইউজারনেম এবং পাসওয়ার্ড প্রদান করতে হয়।
  6. hibernate.dialect:
    Hibernate কে কী ধরনের ডেটাবেস ব্যবহার করা হচ্ছে তা জানানো হয়, যেমন org.hibernate.dialect.MySQL5Dialect (MySQL ডেটাবেসের জন্য)।
  7. hibernate.show_sql:
    যদি আপনি SQL কোয়েরি দেখতে চান, তাহলে এই সেটিংটি true সেট করতে পারেন। এটি Hibernate-এর দ্বারা তৈরি সমস্ত SQL কোয়েরি কনসোল-এ প্রদর্শিত হবে।
  8. hibernate.hbm2ddl.auto:
    এই সেটিংটি ডেটাবেসের স্কিমা প্রক্রিয়া পরিচালনা করে। কিছু সাধারণ মান হলো:
    • update: যদি ডেটাবেস টেবিলটি ইতিমধ্যেই থাকে, তবে Hibernate এটি আপডেট করবে।
    • create: Hibernate ডেটাবেস টেবিলটি প্রতিবার রান করার সময় পুনরায় তৈরি করবে।
    • create-drop: Hibernate ডেটাবেস তৈরি করবে এবং পরে এটি বন্ধ হওয়ার সময় ডেটাবেসটি মুছে ফেলবে।
    • validate: Hibernate ডেটাবেসের কাঠামো যাচাই করবে কিন্তু কিছু পরিবর্তন করবে না।
  9. <mapping class="com.example.model.Employee"/>:
    এটি Entity class ম্যাপিংয়ের জন্য ব্যবহৃত হয়। এখানে Employee ক্লাসটি ডেটাবেসের টেবিলের সাথে সম্পর্কিত। Hibernate এই ক্লাসটি দেখে ডেটাবেস টেবিল এবং কলামের সাথে এর সম্পর্ক স্থাপন করবে।

Hibernate Configuration ফাইল কনফিগারেশন

  • JDBC connection properties: এখানে ডেটাবেসের জন্য JDBC ড্রাইভার, URL, ইউজারনেম, পাসওয়ার্ড ইত্যাদি কনফিগার করা হয়।
  • Dialect: Hibernate কে ডেটাবেসের dialect জানাতে হয় যাতে Hibernate SQL কোডকে ডেটাবেসের জন্য উপযুক্ত করে তৈরি করতে পারে।
  • Schema Management: Hibernate ডেটাবেস স্কিমা তৈরি বা আপডেট করার জন্য hibernate.hbm2ddl.auto ব্যবহার করে।

Hibernate Configuration ফাইলের উদাহরণ - ডেটাবেস সেটআপ

এখানে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে Hibernate-কে MySQL ডেটাবেসের সাথে সংযোগ স্থাপন করতে কনফিগার করা হয়েছে।

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

    <session-factory>
        <!-- JDBC connection settings -->
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">rootpassword</property>

        <!-- JDBC connection pool settings -->
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>

        <!-- Specify Hibernate dialect -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="hibernate.current_session_context_class">thread</property>

        <!-- Show SQL queries in the console -->
        <property name="hibernate.show_sql">true</property>

        <!-- Automatically update the schema -->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- Mapping to Entity classes -->
        <mapping class="com.example.model.Employee"/>
    </session-factory>
    
</hibernate-configuration>

Hibernate Configuration ফাইলের ব্যবহার

  1. Hibernate SessionFactory তৈরি করতে:

    • Hibernate কনফিগারেশন ফাইল ব্যবহার করে SessionFactory তৈরি করা হয় যা ডেটাবেসে CRUD অপারেশন চালানোর জন্য একটি Session তৈরি করবে।
    public class HibernateUtil {
        private static SessionFactory sessionFactory;
    
        static {
            try {
                // Create the SessionFactory from hibernate.cfg.xml
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                throw new ExceptionInInitializerError(ex);
            }
        }
    
        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
    }
    
  2. Entity Class Mapping:

    • Hibernate Entity ক্লাস এবং ডেটাবেস টেবিলের মধ্যে সম্পর্ক স্থাপন করতে সাহায্য করে। আপনি annotations অথবা XML ফাইল ব্যবহার করতে পারেন।
    @Entity
    @Table(name = "employee")
    public class Employee {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int id;
        private String name;
        private String department;
    
        // Getters and setters
    }
    
  • Hibernate Configuration ফাইল (hibernate.cfg.xml) হ'ল Hibernate ফ্রেমওয়ার্কের মুখ্য কনফিগারেশন ফাইল, যা ডেটাবেস সংযোগ এবং ORM (Object-Relational Mapping) সম্পর্কিত কনফিগারেশনগুলি পরিচালনা করে।
  • এই ফাইলের মধ্যে ডেটাবেস কনফিগারেশন, Hibernate সেশন ফ্যাক্টরি সেটিংস, ডায়ালেক্ট এবং স্কিমা পরিচালনা সম্পর্কিত প্রোপার্টি থাকে।
  • Hibernate ফাইলটি session-factory ব্যবহার করে Entity classes ম্যাপ করে এবং ডেটাবেসে CRUD অপারেশন পরিচালনা করতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...